﻿using System;
using System.Collections.Generic;
using System.Text;

namespace daSemanticAnalyser.SemanticTree
{
    using daSyntaxAnalyser.SyntaxTree;

    /// <summary>
    /// Реализация метода
    /// </summary>
    public class MethodRealizationSemanticElement : SectionedSemanticElement, IUnitElementSemanticElement
    {
        private FileSemanticElement unit;
        private StatementElement statement;

        /// <summary>
        /// Модуль, в котором расположен метод
        /// </summary>
        public FileSemanticElement Unit { get { return unit; } set { unit = value; } }

        /// <summary>
        /// Оператор
        /// </summary>
        public StatementElement Compound { get { return statement; } set { statement = value; } }

        /// <summary>
        /// Конструктор
        /// </summary>
        /// <param name="Parent">родительский элемент</param>
        /// <param name="Unit">модуль, в котором расположен метод</param>
        /// <param name="Consts">константы</param>
        /// <param name="Resourcestrings">строковые ресурсы</param>
        /// <param name="Types">типы</param>
        /// <param name="Vars">переменные</param>
        /// <param name="Threadvars">потоковые переменные</param>
        /// <param name="Methods">методы</param>
        /// <param name="Compound">оператор</param>
        /// <param name="SyntaxElement">соответствующий элемент синтаксического дерева</param>
        public MethodRealizationSemanticElement(IChildSemanticElement Parent, FileSemanticElement Unit, List<ConstSemanticElement> Consts, List<ResourceStringSemanticElement> Resourcestrings, List<CommonTypeSemanticElement> Types, List<VarSemanticElement> Vars, List<ThreadvarSemanticElement> Threadvars, List<MethodSemanticElement> Methods, StatementElement Statement, ISyntaxTreeElement SyntaxElement)
            : base(Parent, Consts, Resourcestrings, Types, Vars, Threadvars, Methods, SyntaxElement)
        {
            unit = Unit;
            statement = Statement;
        }
    }
}
